package com.isoft.c2team3service2.controller;

import com.isoft.c2team3service2.bean.ResponseData;
import com.isoft.c2team3service2.entity.ArtistPrivatePost;
import com.isoft.c2team3service2.entity.Post;
import com.isoft.c2team3service2.entity.UserDTO;
import com.isoft.c2team3service2.service.ArtistPrivatePostService;
import com.isoft.c2team3service2.service.PostService;
import com.isoft.c2team3service2.util.UserHolder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 艺人相关帖子控制器
 */
@RestController
@RequestMapping("/artists/posts")
public class ArtistPostController extends BaseController {

    @Autowired
    private ArtistPrivatePostService artistPrivatePostService;
    
    @Autowired
    private PostService postService;

    /**
     * 根据艺人ID查询其收到的私密帖子（仅艺人本人或管理员可访问）
     * @param artistId 艺人ID
     * @return 私密帖子列表
     */
    @GetMapping("/{artistId}")
    public ResponseData<List<ArtistPrivatePost>> getPostsByArtistId(@PathVariable Integer artistId) {
        // 1. 校验用户登录（此时UserHolder应已被拦截器填充）
        UserDTO currentUser = UserHolder.getUser();
        if (currentUser == null) {
            return new ResponseData<>(401, "请先登录", null);
        }
        System.out.println(currentUser.getArtistId());

        // 2. 修复权限校验逻辑：艺人本人=当前用户的artistId等于请求的artistId
        boolean isArtistOwner = currentUser.getArtistId() != null && currentUser.getArtistId().equals(artistId);
        // 管理员判断：假设userType=2为管理员
        boolean isAdmin = currentUser.getUserType() != null && currentUser.getUserType() == 2;

        if (!isArtistOwner && !isAdmin) {
            return new ResponseData<>(403, "无权限查看该艺人的帖子", null);
        }

        // 3. 查询并返回结果
        List<ArtistPrivatePost> posts = artistPrivatePostService.getPostsByArtistId(artistId);
        return new ResponseData<>(200, "查询成功", posts);
    }
    
    /**
     * 获取用户角色的辅助方法
     * @param user 用户对象
     * @return 用户角色
     */
    private String getUserRole(UserDTO user) {
        // 由于UserDTO中没有role字段，暂时默认非管理员
        // 后续可以根据实际需求从其他地方获取用户角色信息
        return "USER"; // 默认返回普通用户角色
    }
    

}